Selene Shepard поделилась ссылкой
16 сентября 2013 года, 14:13
#11406: Я тебя породил — я тебя не убью
Есть у меня програмка, которую я переписываю и дописываю уже больше десяти лет. По другую сторону фронта — бюджетники, о которых я здесь разместил с три десятка статей. Вот в борьбе с ними программа приобрела свойства гидры лернейской: сама отращивает себе головы и хвосты, если обнаруживает, что ей что-то оторвали шаловливыми ручками. Потом добавил и контроль реестра, и автопрописку в автозагрузку. Программа начала обладать уже некоторыми свойствами вируса.

По мере того как у пользователей стал массово появляться инет, программа начала при проблемах докачивать недостающие файлы и стучать мне на сервер о проблемах, то есть стала ещё обладать свойствами даунлоадера и ботнета.

Потом запустил пару параллельных процессов, вечно сидящих в памяти, которые контролируют целостность программы и друг друга и при отсутствии товарищей в памяти их подгружают. После этого остановить легко их я и сам не мог, пока не сделал себе бэкдор в виде флага-файла для остановки. Не знаю, как называются такие вирусы, но получилась живучая гадость типа мейл-агента.

Сейчас приделывал ещё один процесс к тем двум, и понадобилось мне вывести окошко с сообщением. И что оказалось: окошко-то выводится, но поскольку процесс-то консольный, то окошко не кликабельное, сидит поверх всех и закрыть-убрать себя не даёт. Получился винлокер.

«Не страшно, — думаю. — Ctrl+Alt+Del я-то не заблокировал». Хотя были мысли и эту комбинацию заблокировать, так как не завершать работу аварийно, когда им что-то непонятно, я так и не научил.

Запускаю диспетчер процессов. Что-то нарушилось во взаимном вызове процессов, и они хороводом очень быстро загружают и выгружают друг друга. Причём даже не по очереди — видно, один вызывает сразу двух остальных или просто не успевает отобразиться. Остановить их не успеваю, до обработки флага не доходят, в реестр себя пишут. Как такой вирус называется, я не знаю, если подобный вообще есть.

Сижу, смотрю на эту пляску помеси Скайнета и Франкенштейна и не знаю, что делать: то ли гордиться, какой я крутой программер, то ли стыдиться. Наверно, сейчас допишу отдельную программу, которая каждую миллисекунду будет убивать все три процесса, так как, думаю, это не последний раз так хороводит. Боюсь только, что эта программа тоже на их сторону перейдёт.